package com.gkzf.ai.module.crm.controller.admin.creditReport.vo.creditreportdetails;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.gkzf.ai.module.crm.controller.admin.creditReport.vo.creditCardDetails.CreditReportCreditCardDetailsRespVO;
import com.gkzf.ai.module.crm.controller.admin.creditReport.vo.creditLoanDetails.CreditReportLoanDetailsRespVO;
import com.gkzf.ai.module.crm.controller.admin.creditReport.vo.creditreportbasic.CreditReportBasicRespVO;
import com.gkzf.ai.module.crm.dal.dataobject.creditReport.CreditReportLoanOverdueDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - CRM 征信报告详情 Response VO")
@Data
@ExcelIgnoreUnannotated
public class CreditReportDetailsRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "7348")
    private Long id;

    @Schema(description = "征信报告基础表id", example = "21620")
    private Long creditBasicId;

    @Schema(description = "是否是白户 0：否  1：大白户  2：小白户")
    private Integer creditReportWhiteType;

    @Schema(description = "就业情况json")
    private String basicInfoCustomer;

    @Schema(description = "贷款负债概要json")
    private String liabilitiesSummaryLoan;

    @Schema(description = "负债总数")
    private BigDecimal totalLiabilities;

    @Schema(description = "住房按揭账户", example = "21455")
    private Integer housingMortgageAccount;

    @Schema(description = "住房按揭金额")
    private BigDecimal housingMortgageMoney;

    @Schema(description = "车辆按揭账户", example = "22553")
    private Integer vehicleAccount;

    @Schema(description = "车辆按揭金额")
    private BigDecimal vehicleMoney;

    @Schema(description = "银行机构账户", example = "5427")
    private Integer bankingOrganizationAccount;

    @Schema(description = "银行机构余额")
    private BigDecimal bankingOrganizationMoney;

    @Schema(description = "非银行机构账户", example = "8781")
    private Integer nonBankingOrganizationAccount;

    @Schema(description = "非银行机构余额")
    private BigDecimal nonBankingOrganizationMoney;

    @Schema(description = "欠款信息记录数", example = "10121")
    private Integer debtInfoCount;

    @Schema(description = "欠款信息金额")
    private BigDecimal debtInfoMoney;

    @Schema(description = "民生判断信息记录数", example = "7342")
    private Integer civilJudgmentInfoCount;

    @Schema(description = "民生判断信息金额")
    private BigDecimal civilJudgmentInfoMoney;

    @Schema(description = "强制执行信息记录数", example = "28596")
    private Integer enforceInfoCount;

    @Schema(description = "强制执行信息金额")
    private BigDecimal enforceInfoMoney;

    @Schema(description = "行政处罚信息记录数", example = "19877")
    private Integer executivePenalizeInfoCount;

    @Schema(description = "行政处罚信息金额")
    private BigDecimal executivePenalizeInfoMoney;

    @Schema(description = "逾期信息汇总")
    private String creditReportOverdueJson;

    @Schema(description = "信用贷款机构数", example = "13269")
    private Integer creditLoanOrgCount;

    @Schema(description = "信用贷款总额", example = "15493")
    private BigDecimal creditLoanMoneyCount;

    @Schema(description = "信用贷款五级分类非正常数", example = "11048")
    private Integer creditReportFiveLevel;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime createTime;

    @Schema(description = "查询记录汇总")
    private String queryRecordCollect;

    @Schema(description = "查询记录json")
    private String creditReportQueryJson;

    @Schema(description = "查询记录最近一次查询时间")
    private String mostRecentQueryTime;

    @Schema(description = "信用卡机构数")
    @ExcelProperty("信用卡机构数")
    private Integer creditCardOrgNumber;

    @Schema(description = "信用卡账户数")
    private Integer creditCardAccountNumber;

    @Schema(description = "信用卡授信总额")
    private BigDecimal creditCardMaxMoney;

    @Schema(description = "信用卡已用额度")
    private BigDecimal creditCardUsedCredit;

    @Schema(description = "信用卡6个月平均使用额度")
    private BigDecimal creditCardMonthAverage;

    @Schema(description = "信用卡当前使用率")
    private BigDecimal creditCardCurrentRate;

    @Schema(description = "信用卡近6个月平均使用率")
    private BigDecimal creditCardMonthRete;

    @Schema(description = "信用卡余额")
    private BigDecimal creditCardBalance;

    @Schema(description = "负债概要-非循环账户数", example = "9744")
    private Integer debtNonCyclicalAccountCount;

    @Schema(description = "负债概要-非循环授信总额")
    private BigDecimal debtNonCyclicalGrossAmount;

    @Schema(description = "负债概要-非循环授信余额")
    private BigDecimal debtNonCyclicalBalance;

    @Schema(description = "负债概要-非循环6个月平均应还款")
    private BigDecimal debtNonCyclicalMonthAverage;

    @Schema(description = "负债概要-（一）循环账户数", example = "10098")
    @ExcelProperty("负债概要-（一）循环账户数")
    private Integer debtOneCyclicalAccountCount;

    @Schema(description = "负债概要-（一）循环授信总额")
    @ExcelProperty("负债概要-（一）循环授信总额")
    private BigDecimal debtOneCyclicalGrossAmount;

    @Schema(description = "负债概要-（一）循环授信余额")
    @ExcelProperty("负债概要-（一）循环授信余额")
    private BigDecimal debtOneCyclicalBalance;

    @Schema(description = "负债概要-循环（一）6个月平均应还款")
    @ExcelProperty("负债概要-循环（一）6个月平均应还款")
    private BigDecimal debtOneCyclicalMonthAverage;

    @Schema(description = "负债概要-（二）循环账户数", example = "23289")
    @ExcelProperty("负债概要-（二）循环账户数")
    private Integer debtTowCyclicalAccountCount;

    @Schema(description = "负债概要-（二）循环授信总额")
    @ExcelProperty("负债概要-（二）循环授信总额")
    private BigDecimal debtTowCyclicalGrossAmount;

    @Schema(description = "负债概要-（二）循环授信余额")
    @ExcelProperty("负债概要-（二）循环授信余额")
    private BigDecimal debtTowCyclicalBalance;

    @Schema(description = "负债概要-循环（二）6个月平均应还款")
    @ExcelProperty("负债概要-循环（二）6个月平均应还款")
    private BigDecimal debtTowCyclicalMonthAverage;

    @Schema(description = "贷款余额")
    @ExcelProperty("贷款余额")
    private BigDecimal debtCyclicalGrossAmount;

    @Schema(description = "逾期信息明细集合")
    @ExcelProperty("逾期信息明细集合")
    private List<CreditReportLoanOverdueDO> loanOverdueList;

    @Schema(description = "信用卡明细集合")
    private List<CreditReportCreditCardDetailsRespVO> loanOverdueCreditCardDetailsList;

    @Schema(description = "贷款明细集合")
    private List<CreditReportLoanDetailsRespVO> loanOverdueDetailsList;

    @Schema(description = "征信报告基本信息")
    @ExcelProperty("征信报告基本信息")
    private CreditReportBasicRespVO basicRespVO;

    @Schema(description = "担保人代还 0：无  1：有")
    @ExcelProperty("担保人代还 0：无  1：有")
    private Integer guarantorRepayment;
    @Schema(description = "以资抵债 0：无   1：有")
    @ExcelProperty("以资抵债 0：无   1：有")
    private Integer settleDebtsWithCapital;

    @Schema(description = "报告时间")
    private String reportTime;

    @Schema(description = "异常状态错列表")
    private String errorJson;

    @Schema(description = "是否今天")
    private Boolean isToday;

    @Schema(description = "征信分析结果")
    private String creditAnalysis;

    @Schema(description = "信用评分")
    private Integer creditScore;

}